# 1.	创建一个未初始化的张量，其形状为4x3
import torch

print(torch.empty(4, 3))
# 2.	创建一个随机初始化的张量，其形状为4x3
print(torch.rand(4, 3))
# 3.	创建一个全为0的张量，其形状为4x3，数据类型为整数
torch_zeros = torch.zeros((4,3),dtype=torch.int)
print(torch_zeros)
# 4.	使用给定的数据创建一个张量
print(torch.tensor([4, 3]))
# 5.	创建另一个随机初始化的张量，形状为4x3
tensor_random = torch.rand(4,3)
print(tensor_random)
# 6.	使用两种不同的方法进行张量加法
tensor_add = torch.add(torch_zeros, tensor_random)
print(tensor_add)
# 7.	使用索引获取tensor_random张量的第三列
print(tensor_random[:, 2])
# 8.	创建一个随机初始化的张量，形状为3x5
a = torch.rand(3,5)
print(a)
# 9.	将张量形状改变为15，即将3x5的张量平铺成一个一维张量
# torch_flatten = torch.flatten(a)
torch_flatten = a.view(15)
print(torch_flatten)
# 10.	将张量形状改变为-1x5，即自动计算行数使得列数为5
print(torch_flatten.reshape(-1, 5))
# 11.	创建一个需要梯度的权重和偏置张量
w = torch.tensor(1.0,requires_grad=True)
x = torch.tensor(1.0)
b = torch.tensor(1.0,requires_grad=True)
# 12.	计算输出
y = w*x+b
# 13.	进行反向传播，计算梯度
y.backward()
# 14.	打印权重和偏置的梯度
print(x.grad)
print(b.grad)
print(w.grad)